Fix reloading of configuration and meta-data changes Id5819facb591d548df9febf288e38065949128ec made a lot of classes singleton and as result the configuration and the meta-data storage was never updated at runtime. I3f2797983ee5ab690b9806f9b8f4744259598810 fixed one occurrence of this problem but missed to do the same fix in all affected places. Change-Id: I210f6a4c1c3d2156c99e991c72022709a237e7ae Signed-off-by: Edwin Kempin <edwin.kempin@sap.com> (cherry picked from commit 838472ff6fdaf9711c9dbed5569000af731a86d2)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java index 45ad2ba..d7cd3d2 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java
@@ -34,20 +34,23 @@ @Singleton class GetOwner implements RestReadView<ServiceUserResource> { private final GroupsCollection groups; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache; private final GroupJson json; @Inject GetOwner(GroupsCollection groups, @PluginName String pluginName, ProjectCache projectCache, GroupJson json) { this.groups = groups; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache; this.json = json; } @Override public Response<GroupInfo> apply(ServiceUserResource rsrc) throws ResourceNotFoundException, OrmException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); String owner = storage.get().getString(USER, rsrc.getUser().getUserName(), KEY_OWNER); if (owner != null) { GroupDescription.Basic group = groups.parseId(owner); diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java index 6056524..497bc47 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java
@@ -39,7 +39,8 @@ @Singleton class GetServiceUser implements RestReadView<ServiceUserResource> { private final Provider<GetAccount> getAccount; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache; private final GetOwner getOwner; private final AccountInfo.Loader.Factory accountLoader; @@ -48,7 +49,8 @@ @PluginName String pluginName, ProjectCache projectCache, GetOwner getOwner, AccountInfo.Loader.Factory accountLoader) { this.getAccount = getAccount; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache; this.getOwner = getOwner; this.accountLoader = accountLoader; } @@ -56,6 +58,7 @@ @Override public ServiceUserInfo apply(ServiceUserResource rsrc) throws ResourceNotFoundException, OrmException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); String username = rsrc.getUser().getUserName(); Config db = storage.get(); if (!db.getSubsections(USER).contains(username)) { diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java index b295df2..e6e4e06 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java
@@ -42,7 +42,8 @@ @Singleton class ListServiceUsers implements RestReadView<ConfigResource> { private final Provider<CurrentUser> userProvider; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache; private final AccountCache accountCache; private final Provider<ServiceUserCollection> serviceUsers; private final Provider<GetServiceUser> getServiceUser; @@ -53,7 +54,8 @@ AccountCache accountCache, Provider<ServiceUserCollection> serviceUsers, Provider<GetServiceUser> getServiceUser) { this.userProvider = userProvider; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache; this.accountCache = accountCache; this.serviceUsers = serviceUsers; this.getServiceUser = getServiceUser; @@ -62,6 +64,7 @@ @Override public Map<String, ServiceUserInfo> apply(ConfigResource rscr) throws OrmException, AuthException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); CurrentUser user = userProvider.get(); if (user == null || !user.isIdentifiedUser()) { throw new AuthException("Authentication required"); diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java index be3c3c5..f411dfc 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java
@@ -57,7 +57,8 @@ private final Provider<GetConfig> getConfig; private final GroupsCollection groups; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache; private final Project.NameKey allProjects; private final MetaDataUpdate.User metaDataUpdateFactory; private final GroupJson json; @@ -70,7 +71,8 @@ Provider<CurrentUser> self) { this.getConfig = getConfig; this.groups = groups; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache; this.allProjects = projectCache.getAllProjects().getProject().getNameKey(); this.metaDataUpdateFactory = metaDataUpdateFactory; this.json = json; @@ -81,6 +83,7 @@ public Response<GroupInfo> apply(ServiceUserResource rsrc, Input input) throws UnprocessableEntityException, RepositoryNotFoundException, MethodNotAllowedException, IOException, OrmException, ResourceConflictException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); Boolean ownerAllowed = getConfig.get().apply(new ConfigResource()).allowOwner; if ((ownerAllowed == null || !ownerAllowed) && !self.get().getCapabilities().canAdministrateServer()) { diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java index 5d709a2..0638922 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java
@@ -42,7 +42,8 @@ private final CreateServiceUserNotes.Factory serviceUserNotesFactory; private final GitRepositoryManager repoManager; private final WorkQueue workQueue; - private final PluginConfig cfg; + private final PluginConfigFactory cfgFactory; + private final String pluginName; @Inject RefUpdateListener(CreateServiceUserNotes.Factory serviceUserNotesFactory, @@ -51,11 +52,13 @@ this.serviceUserNotesFactory = serviceUserNotesFactory; this.repoManager = repoManager; this.workQueue = workQueue; - this.cfg = cfgFactory.getFromGerritConfig(pluginName); + this.cfgFactory = cfgFactory; + this.pluginName = pluginName; } @Override public void onGitReferenceUpdated(final Event event) { + PluginConfig cfg = cfgFactory.getFromGerritConfig(pluginName); if (!cfg.getBoolean("createNotes", true)) { return; } diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java index 19ef84c..12d8d1c 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java
@@ -50,7 +50,8 @@ private final CreateServiceUser.Factory createServiceUserFactory; private final Provider<ListServiceUsers> list; private final Provider<AccountsCollection> accounts; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache; private final Provider<CurrentUser> userProvider; private final GroupsCollection groups; @@ -64,7 +65,8 @@ this.createServiceUserFactory = createServiceUserFactory; this.list = list; this.accounts = accounts; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache; this.userProvider = userProvider; this.groups = groups; } @@ -72,6 +74,7 @@ @Override public ServiceUserResource parse(ConfigResource parent, IdString id) throws ResourceNotFoundException, AuthException, OrmException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); IdentifiedUser serviceUser = accounts.get().parseId(id.get()); if (serviceUser == null || !storage.get().getSubsections(USER)